package org.gwt.client.vista.dialogos;

import org.gwt.client.controlador.BotonListener;

import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.layout.FormData;

public class DialogoVector2D extends Dialog {

	private Button botonOk;
	private TextField<String> textFieldNombre, textFieldMagnitud, textFieldSentido;
	private BotonListener botonListenerOkVector;
	private FieldSet fieldSetDatos;
	private final SimpleComboBox<String> simpleComboAsociado;

	public DialogoVector2D() {
		botonOk = new Button("Ok");
		setShadow(false);
		setHeading("Vector");
		setWidth("300");
		setButtons(Dialog.CANCEL);
		setHideOnButtonClick(true);
		addButton(botonOk);

		FormPanel formPanelVector = new FormPanel();
		formPanelVector.setPadding(5);
		formPanelVector.setBodyBorder(false);
		formPanelVector.setHeaderVisible(false);
		add(formPanelVector);

		String rio = new String("Rio");
		String barca = new String("Barca");
		String ambos = new String("Ambos");
		simpleComboAsociado = new SimpleComboBox<String>();
		simpleComboAsociado.setFieldLabel("Asociado a");
		simpleComboAsociado.setTriggerAction(TriggerAction.ALL);
		simpleComboAsociado.add(rio);
		simpleComboAsociado.add(barca);
		simpleComboAsociado.add(ambos);
		simpleComboAsociado.setEditable(false);
		simpleComboAsociado.setSimpleValue(rio);

		textFieldNombre = new TextField<String>();
		textFieldNombre.setFieldLabel("Nombre");

		textFieldMagnitud = new TextField<String>();
		textFieldMagnitud.setFieldLabel("Magnitud");

		textFieldSentido = new TextField<String>();
		textFieldSentido.setFieldLabel("Sentido");

		formPanelVector.add(textFieldNombre, new FormData("100%"));
		formPanelVector.add(textFieldMagnitud, new FormData("100%"));
		formPanelVector.add(textFieldSentido, new FormData("100%"));
		formPanelVector.add(simpleComboAsociado, new FormData("100%"));

		inicializarBotonOkVector2D();
	}

	public FieldSet getFieldSetDatos() {
		return fieldSetDatos;
	}

	public TextField<String> getTextFieldNombre() {
		return textFieldNombre;
	}

	private void inicializarBotonOkVector2D() {
		botonOk.addSelectionListener(new SelectionListener<ButtonEvent>() {
			public void componentSelected(ButtonEvent ce) {
				botonListenerOkVector.botonVector3DEvent();
			}
		});
	}

	public void addBotonListener(BotonListener listener) {
		botonListenerOkVector = (listener);
	}

	public void removeBotonListener(BotonListener listener) {
		botonListenerOkVector = null;
	}

	public void hide(boolean clear) {
		if (clear)
			clear();
		hide();
	}

	public void clear() {
		textFieldNombre.clear();
		textFieldMagnitud.clear();
		textFieldSentido.clear();
	}
}
